package com.sunsy.authserver.beans.dto;

import java.util.Date;
import java.io.Serializable;

import lombok.Data;

import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;

/**
 * (UniformUser)表交互类
 *
 * @author makejava
 * @since 2021-07-20 14:40:37
 */
@Data
public class UniformUserDTO implements Serializable {

    private static final long serialVersionUID = -38420803754436647L;
    /**
     * 用户唯一主键
     */
    private Long id;

    /**
     * 自定义的登陆账号
     */
    private String account;

    /**
     * 用户真实姓名
     */
    @NotBlank(message = "用户名不可为空")
    private String username;

    /**
     * md5加密的密码
     */
    @NotBlank(message = "密码不可为空")
    @Pattern(regexp = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)[\\s\\S]{8,16}$", message = "密码至少8-16个字符，至少1个大写字母，1个小写字母和1个数字")
    private String password;

    /**
     * 手机号,可以国家编号
     */
    @NotBlank(message = "手机号不可为空")
    @Pattern(message = "手机号不合法，请检查手机号", regexp = "^[1]\\d{10}$")
    private String mobile;

    /**
     * 邮箱
     */
    @Email
    private String email;

    /**
     * 账号有效期-开始时间
     */
    @Pattern(regexp = "\\d{4}(\\-)\\d{2}\\1\\d{2}", message = "日期格式为yyyy-MM-dd")
    private String expirationDate;

    /**
     * 账号有效期-结束时间
     */
    @Pattern(regexp = "\\d{4}(\\-)\\d{2}\\1\\d{2}", message = "日期格式为yyyy-MM-dd")
    private String expirationEnd;

    /**
     * 账号状态-外部表
     */
    @NotNull
    private Integer status;

    /**
     * 所属部门
     */
    private String dept;

    /**
     * 域账号-只有内部员工有
     */
    private String domainAccount;

    public String getExpirationDate() {
        return expirationDate != null ? expirationDate + " 00:00:00" : null;
    }

    public String getExpirationEnd() {
        return expirationEnd != null && !expirationEnd.equals("-") ? expirationEnd + " 23:59:59" : null;
    }
}